home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / MATH / EEV100R1 / DFSTR.INC next >
Text File  |  1991-09-26  |  4KB  |  134 lines

  1. { ----------------------------------------------------------------------
  2.   DFStr.INC - string functions for Turbo Pascal
  3.  
  4.   Written 1991 by:
  5.  
  6.   David Firth                           GEnie: D.FIRTH
  7.   5665 A2 Parkville Ct.                   CIS: 76467,1734
  8.   Columbus, OH 43229
  9.   (614) 523-1968
  10.  
  11.   Revision 0: May 1991 - __JustStr & __RemWhiteStr
  12.  
  13.   These routines will work with any version of turbo, but as the
  14.   include file designation states, I wrote these for my venerable
  15.   version 3 compiler.  I own TP5.5 and have TP6 registered to me
  16.   at work, but for running TP out of a ram disk when I'm out in
  17.   the field, nothing beats my old TP3.
  18.   ---------------------------------------------------------------------- }
  19.  
  20. Type
  21.  
  22.   AnyStr = string[255];
  23.   Str8   = string[8];
  24.  
  25. Const
  26.  
  27.   _LeftJustify  : byte = 0;               {__JustStr}
  28.   _RightJustify : byte = 1;               {__JustStr}
  29.   _Leading      : byte = 0;               {__RemWhiteStr}
  30.   _Trailing     : byte = 1;               {__RemWhiteStr}
  31.   _All          : byte = 2;               {__RemWhiteStr}
  32.  
  33. { ------------------------ PROCEDURES/FUNCTIONS ----------------------- }
  34.  
  35. Function __JustStr(InputStr:AnyStr;
  36.                    Len:byte;
  37.                    JustChar:char;
  38.                    JustMode:byte) : AnyStr;
  39.  
  40. { Justify string is a very useful function for padding strings. After
  41.   the first time I used a justify function, I had to hae one for TP3.
  42.  
  43.   InputStr is the string to pad.
  44.  
  45.   Len is the length that the final string needs to be.
  46.  
  47.   JustChar is the character to pad by.
  48.  
  49.   JustMode is a constant, chosen from the list above, which chooses
  50.   whether the string is left or right justified.
  51. }
  52.  
  53. Var
  54.  
  55.   Count,                                   {general purpose counter         }
  56.   NumChars   : byte;                       {number of characters to pad with}
  57.  
  58. Begin
  59.  
  60.   if Length(InputStr) < Len then begin
  61.  
  62.     NumChars := Len - Length(InputStr);
  63.     for Count := 1 to NumChars do begin
  64.       case JustMode of
  65.         0: InputStr := InputStr + JustChar;
  66.         1: InputStr := JustChar + InputStr;
  67.       end; {case}
  68.     end; {for}
  69.  
  70.   end
  71.   else begin
  72.  
  73.     InputStr := Copy(InputStr,1,Len);
  74.  
  75.   end; {if-else}
  76.  
  77.   __JustStr := InputStr;
  78.  
  79. End; {__JustStr}
  80.  
  81. { --------------------------------------------------------------------- }
  82.  
  83. Function __RemWhiteStr(InputStr:AnyStr;MyMode:byte):AnyStr;
  84.  
  85. { This function is useful for stripping spaces from a string.
  86.  
  87.   InputStr is the string that will be processed.
  88.  
  89.   MyMode is a constant, chosen from the list above, that chooses
  90.   whether the leading, trailing, or entire complement of spaces
  91.   is removed.
  92. }
  93.  
  94. Var
  95.  
  96.   Count : byte;                   {general purpose counter}
  97.   MyStr : AnyStr;                 {temporary string       }
  98.  
  99. begin
  100.  
  101.   if (MyMode=_Leading) then begin
  102.     {remove the leading spaces}
  103.     Count := 0;
  104.     while (InputStr[Count+1]=' ') AND (Count<Length(InputStr)) do begin
  105.       Count := Count + 1;
  106.     end; {while}
  107.     if Count > 0 then
  108.       Delete(InputStr,1,Count);
  109.   end; {if}
  110.  
  111.   if (MyMode=_Trailing) then begin
  112.     {remove the leading spaces}
  113.     Count := Length(InputStr);
  114.     while (InputStr[Count]=' ') AND (Count>0) do begin
  115.       Count := Count - 1;
  116.     end; {while}
  117.     if Count < Length(InputStr) then
  118.       Delete(InputStr,Count+1,Length(InputStr)-Count);
  119.   end; {if}
  120.  
  121.   if (MyMode=_All) then begin
  122.     MyStr := '';
  123.     for Count := 1 to Length(InputStr) do begin
  124.       if InputStr[Count] <> ' ' then
  125.         MyStr := MyStr + InputStr[Count];
  126.     end; {for}
  127.     InputStr := MyStr;
  128.   end; {if}
  129.  
  130.   __RemWhiteStr := InputStr;
  131.  
  132. end; {__RemWhiteStr}
  133.  
  134.